Amazon EventBridge API destinations で Microsoft Teams へ通知させる
こんにちは、森田です。
今回の記事では、Amazon EventBridge API destinations で Microsoft Teams へ通知させる方法をご紹介します。
やりたいこと
AWS Lamnda を利用せずに通知したい内容のみを整理して通知を行います。
通知する内容の整理は、入力トランスフォーマーを利用します。また、今回のイベントのトリガーは、Security Hubの検知とします。
手順
Microsoft Teams の Webhook URL を発行
まずは、Microsoft Teams に通知させるためにWebhook URL を発行します。
手順については以下のブログをご参照ください。
Amazon EventBridge Rule の作成
AWSコンソールよりAmazon EventBridge Rule の作成を行います。
SecurityHub からの検知をトリガーにするため、以下のように設定します。
今回私の場合は、SecurityHub に統合した AWS Config のiam-user-unused-credentials-check
の検知をトリガーにするようにしています。
{ "detail": { "findings": { "Title": ["iam-user-unused-credentials-check"], "RecordState": ["ACTIVE"], "Workflow": { "Status": ["NEW"] } } }, "detail-type": ["Security Hub Findings - Imported"], "source": ["aws.securityhub"] }
続いて、ターゲットの指定を行います。今回は、API destinations とするため、EventBridge API の宛先
を指定します。
また、API送信先は、新しい送信先を選択してTeams用に作成していきます。
名前、説明は任意の値を設定します。
API 送信先エンドポイントには、先ほど取得した Microsoft Teams の Webhook URL を指定します。
HTTPメソッドは、POST
とします。
接続
の設定を行います。
新しい接続を作成
を選択し、以下のように入力します。
また、API キーには、Content-Type
としてapplication/json
を指定します。
追加設定を選択し、入力トランスフォーマーを設定します。
以下のように取得したい情報のみを入力パスで抽出するようにします。
以下の入力パスですと、リソースのIDとAwsIamUserリソースのUserNameを抽出するように設定しています。
{ "Id": "$.detail.findings[0].Resources[0].Id", "UserName": "$.detail.findings[0].Resources[0].Details.AwsIamUser.UserName" }
テンプレートでは、APIに送信するJSONを指定します。
{ "text":"# クレデンシャルの利用がないユーザを検知しました\n## 検知内容\n- ユーザ名: **<UserName>** \n\n- ARN : **<Id>**" }
あとは、次へ
を選択し、ルールの作成を完了させます。
SecurityHub で検知があると以下のように通知が行われるようになります。
最後に
今回は、AWS Lambda を使わず Microsoft Teams へ通知させる方法をご紹介しました。
検出時にその他処理を行う場合には、やはり AWS Lambda が必要ですが、単純な検出結果の中身を通知させるだけであれば、EventBridge API destinations で実現できます。
AWS Lambda で通知処理を行っている方は、ぜひ一度 EventBridge API destinations も検討してみてはいかがでしょうか。